﻿using System;
using System.Collections.Generic;
using System.Text;
using System.Data.SqlClient;
using System.Data;
using ModeloDesenvolvimento;

/*ESCRITO DIA 02/01/2012*/
namespace Poligas_ERP.Classes
{
    public class Produto
    {
        SqlConnection cnx = new SqlConnection();
        SqlCommand cmd = new SqlCommand();
        DataTable tbProdutos = new DataTable();
        DataTable tbLista = new DataTable();
        DataTable tbGrupo = new DataTable();
        DataTable tbUnidade = new DataTable();
        DataTable tbSituacao = new DataTable();

        Db db = new Db();


        public Produto() { }

        public DataTable CarregaGrupo()
        {
            /**/

            try
            {
                cnx = db.AbreConexao("strConexao");
                cmd = db.getCommand(cnx);

                cmd.CommandText = "spCarregaGrupo";

                tbGrupo.Load(cmd.ExecuteReader());

            }
            catch
            {
            }
            finally
            {
                db.FechaConexao(cnx);
            }
            return tbGrupo;

        }
        public DataTable CarregaUnidade()
        {
            /**/

            try
            {
                cnx = db.AbreConexao("strConexao");
                cmd = db.getCommand(cnx);

                cmd.CommandText = "spCarregaUnidade";

                tbUnidade.Load(cmd.ExecuteReader());

            }
            catch
            {
            }
            finally
            {
                db.FechaConexao(cnx);
            }
            return tbUnidade;
        }
        public DataTable CarregaSituacao()
        {
            /**/

            try
            {
                cnx = db.AbreConexao("strConexao");
                cmd = db.getCommand(cnx);

                cmd.CommandText = "spCarregaSituacoes";

                tbSituacao.Load(cmd.ExecuteReader());

            }
            catch
            {
            }
            finally
            {
                db.FechaConexao(cnx);
            }
            return tbSituacao;
        }


        public DataTable LocalizarDados(String Pesquisar)
        {
            try
            {
                cnx = db.AbreConexao("strConexao");
                cmd = db.getCommand(cnx);

                cmd.Parameters.AddWithValue("@Descricao", Pesquisar);

                cmd.CommandText = "spProdutoPesquisar";

                tbLista.Clear();
                tbLista.Load(cmd.ExecuteReader());
            }
            catch
            {
            }
            finally
            {
                db.FechaConexao(cnx);
            }
            return tbLista;
        }
        public DataTable RecuperarDadosPorCodigo(Int32 CodProduto)
        {
            try
            {
                cnx = db.AbreConexao("strConexao");
                cmd = db.getCommand(cnx);

                cmd.Parameters.AddWithValue("@CodProduto", CodProduto);
                cmd.CommandText = "spProdutosSelect";

                tbProdutos.Clear();
                tbProdutos.Load(cmd.ExecuteReader());
            }
            catch
            {
            }
            finally
            {
                db.FechaConexao(cnx);
            }
            return tbProdutos;
        }
        public Boolean Inserir(Int32 CodSituacao, String Descricao, Int32 CodUnidade,  Decimal QtdEstoque, Int32 QtdMinimo, Int32 QtdMax, Int32 CodGrupo,
                               Decimal VlTabela, Decimal VlVenda)
        {
            Boolean erro = false;

            try
            {
                cnx = db.AbreConexao("strConexao");
                cmd = db.getCommand(cnx);

                cmd.Parameters.AddWithValue("@Descricao", Descricao);
                cmd.Parameters.AddWithValue("@CodGrupo", CodGrupo);
                cmd.Parameters.AddWithValue("@VlTabela", VlTabela);
                cmd.Parameters.AddWithValue("@VlVenda", VlVenda);
                cmd.Parameters.AddWithValue("@QtdEstoque", QtdEstoque);
                cmd.Parameters.AddWithValue("@QtdMinimo", QtdMinimo);
                cmd.Parameters.AddWithValue("@QtdMax", QtdMax);
                cmd.Parameters.AddWithValue("@CodUnidade", CodUnidade);
                cmd.Parameters.AddWithValue("@CodSituacao", CodSituacao);

                cmd.CommandText = "spProdutosInsert";
                cmd.ExecuteNonQuery();

            }
            catch
            {
                erro = true;
            }
            finally
            {
                db.FechaConexao(cnx);
            }

            return erro;

        }
        public Boolean Alterar(Int32 CodProduto, Int32 CodSituacao, String Descricao, Int32 CodUnidade, Decimal QtdEstoque, Int32 QtdMinimo, Int32 QtdMax, Int32 CodGrupo,
                               Decimal VlTabela, Decimal VlVenda)
        {
            Boolean erro = false;

            try
            {
                cnx = db.AbreConexao("strConexao");
                cmd = db.getCommand(cnx);

                cmd.Parameters.AddWithValue("@CodProduto", CodProduto);
                cmd.Parameters.AddWithValue("@Descricao", Descricao);
                cmd.Parameters.AddWithValue("@CodGrupo", CodGrupo);
                cmd.Parameters.AddWithValue("@VlTabela", VlTabela);
                cmd.Parameters.AddWithValue("@VlVenda", VlVenda);
                cmd.Parameters.AddWithValue("@QtdEstoque", QtdEstoque);
                cmd.Parameters.AddWithValue("@QtdMinimo", QtdMinimo);
                cmd.Parameters.AddWithValue("@QtdMax", QtdMax);
                cmd.Parameters.AddWithValue("@CodUnidade", CodUnidade);
                cmd.Parameters.AddWithValue("@CodSituacao", CodSituacao);

                cmd.CommandText = "spProdutosUpdate";
                cmd.ExecuteNonQuery();

            }
            catch
            {
                erro = true;
            }
            finally
            {
                db.FechaConexao(cnx);
            }

            return erro;
        }
        public Boolean Excluir(Int32 CodProduto)
        {
            Boolean sucesso = true;

            if(CodProduto < 0)
            {
                sucesso = false;
            }
            else
            {
                try
                {
                    cnx = db.AbreConexao("strConexao");
                    cmd = db.getCommand(cnx);

                    cmd.Parameters.AddWithValue("@CodProduto", CodProduto);
                    cmd.CommandText = "spProdutosDelete";

                    cmd.ExecuteNonQuery();

                }
                catch
                {
                    sucesso = false;
                }
                finally
                {
                    db.FechaConexao(cnx);
                }
            }
            return sucesso;
        }

    }
}
